package controller;


import java.io.IOException;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

import dao.UserDao;

@WebServlet("/UserUpPwServlet")
public class UserUpPwServlet extends HttpServlet {
	 
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	   // 获取HttpSession对象
        HttpSession session = request.getSession(false);
    	String userId = (String) session.getAttribute("user");
    	
    	
        UserDao dao = new UserDao();
        String newPassword2 = request.getParameter("newPassword2");
   
       
 
        if (session != null && userId!= null && !newPassword2.isEmpty()) {
           
        
            boolean result = dao.updatePassword(userId, newPassword2); // 注意参数顺序
 
            if (result) {
                // 密码修改成功，可以选择注销用户或重定向到登录页面（这里选择重定向）
                session.removeAttribute("user"); // 移除会话中的用户ID，相当于注销
                response.sendRedirect(request.getContextPath() + "/view/Login.jsp");
            } else {
                // 密码修改失败，将错误信息添加到请求属性中，并转发回修改密码页面
                request.setAttribute("info", "密码修改失败");
                request.getRequestDispatcher("/View_message/改密码.jsp").forward(request, response); // 更新密码的页面是改密码.jsp
            }
             
        } else {
            // 会话不存在或用户ID未设置，重定向到登录页面或显示错误页面
            response.sendRedirect(request.getContextPath() + "/view/Login.jsp");
        }
        
      
    }
}



/*
 * import dao.UserDao;
 * 
 * import jakarta.servlet.ServletException; import
 * jakarta.servlet.http.HttpServlet; import
 * jakarta.servlet.http.HttpServletRequest; import
 * jakarta.servlet.http.HttpServletResponse; import
 * jakarta.servlet.http.HttpSession; import java.io.IOException;
 * 
 * public class UserUpPwServlet extends HttpServlet { // 处理POST请求的方法 protected
 * void doPost(HttpServletRequest request, HttpServletResponse response) throws
 * ServletException, IOException { // 获取新密码 String newPassword1 =
 * request.getParameter("newPassword1"); String newPassword2 =
 * request.getParameter("newPassword2");
 * 
 * // 验证密码一致性和其他规则（这里应该还有更多验证，比如用户身份） if (!newPassword1.equals(newPassword2)) {
 * // 密码不一致，返回错误 response.sendError(HttpServletResponse.SC_BAD_REQUEST,
 * "Passwords do not match"); return;; }
 * 
 * // 加密新密码（这里省略了加密逻辑，你应该使用适当的加密方法） String encryptedPassword =
 * encryptPassword(newPassword1);
 * 
 * // 更新数据库中的密码（这里省略了数据库连接和更新逻辑） boolean updateSuccess =
 * updateUserPasswordInDatabase(id, encryptedPassword); // 假设userId是从会话中获取的
 * 
 * if (updateSuccess) { // 密码更新成功，重定向到登录页面或其他页面
 * response.sendRedirect("../view/Login.jsp"); } else { // 密码更新失败，返回错误
 * response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
 * "Failed to update password"); } }
 * 
 * // 加密密码的方法（这里应该使用实际的加密库） private String encryptPassword(String password) { //
 * ... 加密逻辑 ... return encryptedPassword; }
 * 
 * // 更新数据库中用户密码的方法（这里应该包含实际的数据库操作） private boolean
 * updateUserPasswordInDatabase(int userId, String encryptedPassword) { // ...
 * 数据库更新逻辑 ... return true; // 假设更新成功 } }
 * 
 */